/*
  后缀表达式的值
  题目描述
    从键盘读入一个后缀表达式（字符串），只含有 0-9 组成的运算数及加（+）、减（—）、乘（*）、除（/）四种运算符。
    每个运算数之间用一个空格隔开，不需要判断给你的表达式是否合法。以 @ 作为结束标志。
    比如，16–9*(4+3) 转换成后缀表达式为：
      16□9□4□3□+*–，
    在字符数组 A 中的形式为：

        a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]a[11]a[12] a[13]
       ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
       │ 1  │  6 │    │  9 │    │  4 │    │ 3  │    │ +  │  * │  - │ @  │
       └────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘

    栈中的变化情况：

       │       │    │       │   │       │    │       │   │       │   │       │    │       │
       ├───────┤    ├───────┤   ├───────┤    ├───────┤   ├───────┤   ├───────┤    ├───────┤
       │       │    │       │   │       │    │   3   │   │       │   │       │    │       │
       ├───────┤    ├───────┤   ├───────┤    ├───────┤   ├───────┤   ├───────┤    ├───────┤
       │       │    │       │   │   4   │    │   4   │  +│   7   │   │       │    │       │
       ├───────┤    ├───────┤   ├───────┤    ├───────┤   ├───────┤   ├───────┤    ├───────┤
       │       │    │   9   │   │   9   │    │   9   │   │   9   │  *│   63  │    │       │
       ├───────┤    ├───────┤   ├───────┤    ├───────┤   ├───────┤   ├───────┤    ├───────┤
       │   16  │    │   16  │   │   16  │    │   16  │   │   16  │   │   16  │   -│  -47  │
       └───────┘    └───────┘   └───────┘    └───────┘   └───────┘   └───────┘    └───────┘

    运行结果：-47
    提示：输入字符串长度小于 250，参与运算的整数及结果之绝对值均在 long long 的范围内，如有除法保证能整除。
  输入
    一个后缀表达式。(输入数据保证只有一行)
  输出
    一个后缀表达式的值。
  样例输入
    16 9 4 3 +*-@
  样例输出
    -47
*/

#include <bits/stdc++.h>

using namespace std;

int main() {
    string s;
    long long num = 0;
    long long  a3, a4;
    stack <long long> a1;

    // 从命令行读入一行字符串
    getline(cin, s);

    for (int i = 0; i < s.size() - 1; i++) {
        if (s[i] >= '0' && s[i] <= '9') {
            num = num * 10 + s[i] - '0';
        } else if (s[i] == ' ') {
            a1.push(num);
            num = 0;
        } else if (s[i] == '+') {
            if (!a1.empty()) {
                a3 = a1.top();
                a1.pop();
                a4 = a1.top();
                a1.pop();
                a1.push(a3 + a4);
            }
        } else if (s[i] == '-') {
            if (!a1.empty()){
                a3 = a1.top();
                a1.pop();
                a4 = a1.top();
                a1.pop();
                a1.push(a4 - a3);
            }
        } else if(s[i] == '*') {
            if (!a1.empty()) {
                a3 = a1.top();
                a1.pop();
                a4 = a1.top();
                a1.pop();
                a1.push(a3 * a4);
            }
        } else if(s[i] == '/') {
            if (!a1.empty()) {
                a3 = a1.top();
                a1.pop();
                a4 = a1.top();
                a1.pop();
                a1.push(a4 / a3); // 特别注意: 这里运算式的操作数的先后关系
            }
        }
    }

    cout << a1.top();
    return 0;
}